﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TOAcademias;


namespace DAOAcademias
{

    /*************************************
    Autor: Carlos Sánchez
    Fecha de Creación: 06/02/2011
    Descripción de la Funcionalidad: Clase que contiene metodos que serviran para dar
    soporte a los registros de la entidad OpcionRespuesta.
    **************************************/

    public class DOOpcionRespuesta
    {

    DBModuloAcademiasDataContext dbml;
        
         public DOOpcionRespuesta()
        {
            dbml = new DBModuloAcademiasDataContext();
        }


         public List<TOOpcionRespuesta> obtenerOpcionRespuesta()
         {
             List<TOOpcionRespuesta> listaOpcionRespuesta = new List<TOOpcionRespuesta>();

             var OpcionRespuesta = (from op in dbml.OPCION_RESPUESTAs
                              select op 
                              );

             foreach (var op in OpcionRespuesta)
             {
                 TOOpcionRespuesta toOpcionRespuesta = new TOOpcionRespuesta();
                 toOpcionRespuesta.CodPregunta = op.COD_PREGUNTA;
                 toOpcionRespuesta.Codigo = op.COD_OPCRESPUESTA;
                 toOpcionRespuesta.Descripcion  = op.DES_OPCRESPUESTA;
                 listaOpcionRespuesta.Add(toOpcionRespuesta);
             }

             return listaOpcionRespuesta;
         }

         public List<TOOpcionRespuesta> obtenerOpcionRespuestaxPregunta(String codPregunta)
         {
             List<TOOpcionRespuesta> listaOpcionRespuesta = new List<TOOpcionRespuesta>();

             var OpcionRespuesta = (from op in dbml.OPCION_RESPUESTAs
                                    where op.COD_PREGUNTA==codPregunta
                                    select op
                              );

             foreach (var op in OpcionRespuesta)
             {
                 TOOpcionRespuesta toOpcionRespuesta = new TOOpcionRespuesta();
                 toOpcionRespuesta.CodPregunta = op.COD_PREGUNTA;
                 toOpcionRespuesta.Codigo = op.COD_OPCRESPUESTA;
                 toOpcionRespuesta.Descripcion = op.DES_OPCRESPUESTA;
                 listaOpcionRespuesta.Add(toOpcionRespuesta);
             }

             return listaOpcionRespuesta;
         }

         public List<TOOpcionRespuesta> obtenerOpcionRespuestaxEncuesta(String codEncuesta)
         {
             List<TOOpcionRespuesta> listaOpcionRespuesta = new List<TOOpcionRespuesta>();

             var OpcionRespuesta = (from op in dbml.OPCION_RESPUESTAs
                                    join pre in dbml.PREGUNTAs
                                    on op.COD_PREGUNTA equals pre.COD_PREGUNTA
                                    join enc in dbml.ENCUESTAs
                                    on pre.COD_ENCUESTA equals enc.COD_ENCUESTA
                                    where enc.COD_ENCUESTA == codEncuesta
                                    select op
                              );

             foreach (var op in OpcionRespuesta)
             {
                 TOOpcionRespuesta toOpcionRespuesta = new TOOpcionRespuesta();
                 toOpcionRespuesta.CodPregunta = op.COD_PREGUNTA;
                 toOpcionRespuesta.Codigo = op.COD_OPCRESPUESTA;
                 toOpcionRespuesta.Descripcion = op.DES_OPCRESPUESTA;
                 listaOpcionRespuesta.Add(toOpcionRespuesta);
             }

             return listaOpcionRespuesta;
         }

         public String generarCodigoOpcionRespuesta()
         {
             List<TOOpcionRespuesta> listaOpcionRespuesta = obtenerOpcionRespuesta();

             int intAux = 0;
             int intTemp = 0;
             foreach (TOOpcionRespuesta opcionRespuesta in listaOpcionRespuesta)
             {
                 intTemp = Convert.ToInt32(opcionRespuesta.Codigo.Substring(2));
                 if (intTemp > intAux)
                 {
                     intAux = intTemp;
                 }
             }
             intAux = intAux + 1;

             string strCodigo = "" + intAux;

             strCodigo = "OP000".Substring(0, 5 - strCodigo.Length) + intAux;

             return strCodigo;
         }

         public void insertarOpcionRespuesta(TOOpcionRespuesta toOpcionRespuesta)
         {
             OPCION_RESPUESTA op = new OPCION_RESPUESTA();
             op.COD_OPCRESPUESTA = generarCodigoOpcionRespuesta();
             op.COD_PREGUNTA = toOpcionRespuesta.CodPregunta;
             op.DES_OPCRESPUESTA = toOpcionRespuesta.Descripcion;

             dbml.OPCION_RESPUESTAs.InsertOnSubmit(op);
             dbml.SubmitChanges();
         }

         public void modificarOpcionRespuesta(TOOpcionRespuesta toOpcionRespuesta)
         {
             var OpcionRespuesta = (from op in dbml.OPCION_RESPUESTAs
                             where op.COD_OPCRESPUESTA == toOpcionRespuesta.Codigo
                             select op).Single();

             OpcionRespuesta.DES_OPCRESPUESTA = toOpcionRespuesta.Descripcion;
   
             dbml.SubmitChanges();

         }
        
         public void eliminarOpcionRespuesta(String codigo)
         {
             var opRespuesta = (from op in dbml.OPCION_RESPUESTAs
                                where op.COD_OPCRESPUESTA == codigo
                                select op).Single();


             dbml.OPCION_RESPUESTAs.DeleteOnSubmit(opRespuesta);

             dbml.SubmitChanges();

         }

         public void eliminarOpcionRespuestaxPregunta(String Codigo)
         {
             var opRespuesta = (from op in dbml.OPCION_RESPUESTAs
                                where op.COD_PREGUNTA == Codigo
                                select op);

             foreach (var op in opRespuesta)
             {
                 dbml.OPCION_RESPUESTAs.DeleteOnSubmit(op);
             }

             dbml.SubmitChanges();

         }


    }
}
